/*
 * Usuario.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package cdp;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import util.utilitarioPersistencia.ObjetoPersistente;

@Entity
public class Usuario extends ObjetoPersistente {

    private String nome;
    private String senha;
    private Boolean ativo;

    

    public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Boolean getAtivo() {
        return ativo;
    }

    public void setAtivo(Boolean ativo) {
        this.ativo = ativo;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenhaCriptografar(String senha) {
        this.senha = gerarHashCode(senha);
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }


    public static String gerarHashCode(String s) {
        //difine o tipo de hash a ser gerado
        MessageDigest hash = null;
        try {
            hash = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        //passa os bytes da senha
        hash.update(s.getBytes());
        //transforma o hash em bytes gerado para hexadecimal
        String hashCode = byte2StringHexa(hash.digest());
        hash.reset();

        return hashCode;
    }

    private static String byte2StringHexa(byte[] bytes) {
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            int parteAlta = ((bytes[i] >> 4) & 0xf) << 4;
            int parteBaixa = bytes[i] & 0xf;
            if (parteAlta == 0) {
                s.append('0');
            }
            s.append(Integer.toHexString(parteAlta | parteBaixa));
        }
        return s.toString();
    }
}